In December of 2021 I had an Idea for a Space Invaders parody game, it would play like normal for the first stage and then the twist would happen, the planets aligned and I actually saw this game through to fruition. After showing it to some friends and getting positive feedback, I, for whatever reason, remained unsatisfied with the end result and left it to rot in the hard drive of my old laptop, despite having spent the last few days feverishly trying to finish it (a cycle I would come to repeat in the future).

Now December of 2023, with this site up and running I had an urge to retread the trail of unfinished projects that lie in my wake, thinking I'd just feel bad for all the hours wasted only to be surprised by how much fun I still had playing this thing. So, after touching up the code and fighting GameMaker's god-awful HTML export, Space Invaders Black Label is exhumed and playable on Itch.io.

I encourage you to give it shot before continuing with the devlog, it's playable in browser and you only need to beat the first level to see what it's about.
k i did that/just wanna read
like so many other things online, it turned out to be touhou

One faithful day, my brain conjured the image of Space Invaders gameplay where the aliens suddenly start bombarding you with touhou-esque bullet patterns and I just couldn't let the idea go.
As for the name, the term "black label" was used by shmup developer CAVE when releasing an updated/remixed version of a previous game, Space Invaders being a sort of proto-shmup it felt very fitting.

Seeing as it's been two years, I can't really recall the step by step process of development, so I won't be following any chronological order, instead I'll try cobbling together anything I can remember about how this thing came to be.

Colors

The first thing that came back to me after digging it up was just how much I needlessly stressed over getting it to look and feel like the original. The original Space Invaders cabinet was solely black and white, the colors you'd see were from a transparent overlay stuck to the screen.

It seems there were various color combinations used by arcades, the one I went with was just what I found most appealing.

To get the effect of sprites changing color as they enter different sections of the screen (say a bullet becoming green as it passes by the shields) I ended up somewhat mimicking what the cabinets do by having predefined colors and selecting one based on a sprite's position, the way it's implemented means that sprites never actually transition from one to the other, rather they simply snap to the designated color, this is a super tiny inconsistency though and isn't really noticeable during gameplay (plus I'd be a huge pain in the ass to program).

Perhaps having basic colors like these defined as global variables is a bit unnecessary, but it did enable me to easily change them on the fly, leading to a custom color mode as an unlockable after beating the boss.

I really like it when games give you these sort of vanity unlocks, more singleplayer games should have cosmetics as a reward.

shields

The shields in the original work on a by-pixel basis, so when a bullet hits them the "hit sprite" from that bullet will delete every pixel it touches, to achieve this I built-up the shields by putting together 2x4 chunks of "shield", with the corners being their own special pieces.

There's no reason you couldn't further divide them into 1x1 pixels, thus making it work one to one with the original, honestly I'm surprised I wasn't so stubborn as to take that route, I was probably concerned that having this many objects at once might bog down performance later on in development (knowing more about GameMaker now I doubt it would).

AI

The enemies in Space Invaders move from one end of the screen to the other, when reached they move down and switch direction, accompanied by a sound for each step taken; as the columns of enemies depletes they will need more steps to reach a screen border, so to make up for this, they speed up.

All of these elements are present in Black Label, though definitely not to the stupidly high standard of recreation I'd had set for myself. One very small thing about enemy movement is that it happens row by row, bottom to top, a detail so minute I failed to even realize I'd wasted my time recreating it until I stumbled upon the code that does so.

No, I don't know how it works, all I remember is that the "noEnmCheck==11" thing was very hacky and that all of this was very frustrating to get working the way I wanted.
Enemy movement never quite reaches the same rate as it does in the original, instead after 14 or less are left the game enables "specials", which are the unique attacks each one does.

But before moving onto that, let's see how regular attacks work.

When operating normally, every enemy individually rolls a random number between 0 and 120(shotFrequency) every frame, or 60 times a second, to determine whether or not to shoot; all of the subsequent checks I'm guessing came about from observing the Space Invaders AI, so:

after all of this, our bullet can finally be shot out, and if specials are on, then it needs to have a "speed" and "direction" assigned as the code for bullet movement changes.

Wow, sure is a lot of work for such a boring feature like choosing to shot a bullet straight down, well that comprises the majority game development. Anyway, what about specials?

Once enabled, enemies will begin an additional "shotFrequeny" check, wherein, if there aren't too many bullets on screen already, they do one of three attacks based on their sprite. These are: a ring of bullets, two peripheral bullets and an aimed stream of bullets

Additionally there's the forth enemy, the boss, which flies by every 43 seconds and lets you get extra score, oh yeah did I mention there's a whole ass functional scoring system? I'm not gonna get into it but if you're curious it's similar to touhou's spellcard bonuses. That's not all though, hitting the boss during the stage section actually lowers its HP, meaning it's possible to damage it 24 times and completely skip most attacks, though due to the way it's programmed some still come through. Of course I'm not really expecting anyone to use this as a legitimate strategy, it's here because I thinks it's a neat detail, and because I love it when games let you sequence break in any way, it simply being something technically possible makes me happy.

The Boss

The main course! I could ramble endlessly about the minutia of how this fight works, but I doubt anyone cares to read all that, so let's focus on a few main things.

Each of its attacks is contained within a script (GameMaker's functions) and the boss chooses one from a switch statement based on how much HP it has. This is a decent enough implementation, however, one lesson I won't forget from this project is to never use a single HP variable for a multi-phase boss fight, god forbid later on you decide to change the order of attacks, or how much HP a phase has, I now understand that ZUN's giving bosses multiple health bars was never a stylistic choice.

Obviously the entire thing is very touhou inspired, but two patterns in particular were directly based on existing ones in touhou, those being: Aya's "Peerless Wind God" and Byakuren's "Superhuman"



If you're one of the few that bothered playing it, you might have noticed that during this particular attack shooting is disabled, that's because this pattern is comprised of three subsequent parts where an array of bullets is accessed, and no matter how many checks I put in place somewhere along the line when a bullet is missing the game tries to access it, can't, and crashes. If I were to comb through the code now, I could probably fix it, but it's been years and I'd rather just stick with this band-aid solution.

Quality of Life

Having to kill all of the aliens each time before attempting the boss would immediately become tedious, so after your first encounter, from the menu you'll have the option to enable "fast mode" wherein instead of one, you can have three! bullets out at once (only for the stage portion of course).

This too however, would quickly amount to tedium, so after three encounters with the extra terrestrial you'll be given the ability to simply press a button and skip straight to the fight.

And lastly, when deciding to release this project years later, all I'd really want from it is for people to actually see it, for most I imagine, having died to the boss five times they'd probably soon stop playing, so that's why at that point I now implemented the ability to give yourself infinite lives.
I'm not one of those people who think every game needs to be for everyone, or that accessibility features like these don't affect all players (though I'd hardly call stuff like this an accessibility feature), but at this point, for a joke game like this one, the desire to have it seen is stronger than the one to have it align perfectly with my ideals in game making.

I don't mean to come off as saying "games shouldn't have easy modes", a game should have, and be, everything the developers want it to; I just really dislike the recently popularized notion that a "skip annoying section" button doesn't change a game's experience because some will choose to never use it. Everything, no matter how small or optional, changes the way a game is perceived, compared to how it would be if it weren't there.